<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
        promise是一种异步编程的解决方案 所以promsie要包裹一个异步操作 他有三个状态 进行中（pending）已成功（fullfilled） 已失败（rejected）

        promise 是一个类 可以通过实例化得到一个promise对象 实例化时接收一个函数作为参数 函数内部接收两个函数作为参数分别是resolve reject
        
        resolve调用时会立即将promsie从进行中的状态直接转化为成功的状态

        reject调用时会立即将promise从进行中的状态转化为失败的状态
     -->

     <script>

         var a = 1

        // setTimeout(function() {
        //     a++
        // }, 0)

        // console.log(a)

        //  new Promise(function(resolve, reject) {
        //     setTimeout(function() {
        //         a++
        //         reject(a)
        //     }, 1000)
        //  }).then(res => { // then是获取promise结果的方法 then有连个参数第一个是promsie执行成功的回调函数 第二个是promsie执行失败的回调函数
        //     // console.log(res)
        //  }, err => {
        //     console.log(err)
        //  }) // 当然也可以通过catch捕获promsie执行失败的信息 catch和then的第二个参数的功能相同


        // var promise = new Promise(function(resolve, reject) {
        //     setTimeout(function() {
        //         a++
        //         reject(a)
        //     }, 1000)
        //  })


        //  promise.then(res => {

        //  }, err => {
        //     console.log(err)
        //  })


        function promsie() {
            return new Promise(function(resolve, reject) {
                setTimeout(function() {
                    a++
                    reject(a)
                }, 1000)
            })
        }

        promsie().then(res => {

        }).catch(err => {
            console.log(err)
        })



        
     </script>
</body>
</html>